#ifndef BIGINT_H
#define BIGINT_H
#include <vector>
#include <iostream>

/*
Theory:
The largest digit number this library can handle in 32bit is 4,294,967,295
The largest digit number this library can handle in 64bit is 18,446,744,073,709,551,615
(Source: wikipedia)
*/

#define VERSION "1.0-0"

class bigint {
private:
	std::vector<int> num;
	int sizeofchar(char* chr_arr);
	int cbit;
	int sbit;
	int ybit;
	int xbit;
	int incbit;
	void halfaddr();
	void fulladdr();
	friend std::ostream& operator<<(std::ostream& os,bigint& bi);
public:
	void pushback(int n);
	void equals(char* cn);
	bigint operator+(bigint& num);
	int isnum(int n);
	int* getNumber();
	int length();
	void testHalfAddr(int xbit, int ybit);
	void testFullAddr(int xbit, int ybit, int cbit);
	int getSbit();
	int getCbit();
	bigint();
	bigint(char* chr_arr);
};
#endif
